home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / text / edit / envwrd41.lha / envWRD41 / source / words / init.c < prev    next >
C/C++ Source or Header  |  1996-10-23  |  3KB  |  132 lines

  1. #include "defs.h"
  2.  
  3. /// "Prototypes"
  4.  
  5. Prototype BOOL InitC(void);
  6. Prototype void ExitC(void);
  7.  
  8. ///
  9. /// "Init"
  10.  
  11. /* ----------------------------------- InitC -----------------------------------
  12.  
  13.  Library startup code (C entry point).
  14.  
  15. */
  16.  
  17. __geta4 BOOL
  18. InitC(void)
  19. {
  20.     UBYTE options[255];
  21.     UWORD ascii;
  22.  
  23.     InitSemaphore(&ISpellSemaphore);
  24.  
  25.     // valid characters: A-Z, a-z and national characters (äöü...)
  26.  
  27.     for (ascii = 0; ascii < 256; ++ascii)
  28.  
  29.         IsLetter[ascii] = ((ascii >= 'A') && (ascii <= 'Z')) || ((ascii >= 'a') && (ascii <= 'z')) || ((ascii >= 192) && (ascii != 215) && (ascii != 247));
  30.  
  31.     Online = FALSE;
  32.  
  33.     // read options
  34.  
  35.     if (GetVar("WORDS.prefs", options, sizeof(options), GVF_GLOBAL_ONLY) != -1) {
  36.  
  37.         struct RDArgs *rdArgs, *args;
  38.  
  39.         if (rdArgs = AllocDosObject(DOS_RDARGS, NULL)) {
  40.  
  41.             ULONG argArray[] = { 0, 0, 0, 0, 0 };
  42.  
  43.             // make LF-terminated copy of options string (required by dos/readArgs):
  44.  
  45.             strcat(options, "\12");
  46.  
  47.             rdArgs->RDA_Source.CS_Buffer = options;
  48.             rdArgs->RDA_Source.CS_Length = strlen(options);
  49.             rdArgs->RDA_Source.CS_CurChr = 0;
  50.             rdArgs->RDA_DAList           = 0;
  51.             rdArgs->RDA_Buffer           = NULL;
  52.  
  53.             if (args = ReadArgs("LANGUAGE/K,QUICKCHECK/K,BOUNDARYCHARS/K,BEEP/N,ARGS/F", argArray, rdArgs)) {
  54.  
  55.                 if (argArray[2]) {                   // BOUNDARYCHARS/K
  56.  
  57.                     // boundary characters (e.g. ') are either letter (if next character is a letter) or space
  58.  
  59.                     UBYTE *isBoundary = (UBYTE *)argArray[2];
  60.  
  61.                     while (*isBoundary)
  62.  
  63.                         IsBoundary[(UWORD)*isBoundary++] = TRUE;
  64.                 }
  65.  
  66.                 if (argArray[3]) {                   // BEEP/N
  67.  
  68.                     Volume = *(ULONG *)argArray[3];
  69.  
  70.                     if (Volume)
  71.                         Online = TRUE;
  72.                 }
  73.  
  74.                 if (argArray[4]) {                   // ARGS/F
  75.  
  76.                     UBYTE *isChar;
  77.  
  78.                     // additional characters to be considered as "letter" ? Syntax: -w "..."
  79.  
  80.                     if (isChar = strstr((UBYTE *)argArray[4], "-w ")) {
  81.  
  82.                         while (*isChar) {
  83.  
  84.                             if (*isChar++ == 34) {
  85.  
  86.                                 while (*isChar && (*isChar != 34))
  87.  
  88.                                     IsLetter[(UWORD)*isChar++] = TRUE;
  89.  
  90.                                 break;
  91.                             }
  92.                         }
  93.                     }
  94.                 }
  95.  
  96.                 FreeArgs(args);
  97.             }
  98.  
  99.             FreeDosObject(DOS_RDARGS, rdArgs);
  100.         }
  101.     }
  102.  
  103.     // trigger keys (online spellchecking)
  104.  
  105.     IsTrigger[' '] = TRUE;
  106.     IsTrigger[','] = TRUE;
  107.     IsTrigger['.'] = TRUE;
  108.     IsTrigger[';'] = TRUE;
  109.     IsTrigger[')'] = TRUE;
  110.     IsTrigger[']'] = TRUE;
  111.     IsTrigger['}'] = TRUE;
  112.  
  113.     return(TRUE);
  114. }
  115.  
  116. ///
  117. /// "Exit"
  118.  
  119. /* ----------------------------------- ExitC -----------------------------------
  120.  
  121.  Library cleanup code
  122.  
  123. */
  124.  
  125. __geta4 void
  126. ExitC(void)
  127. {
  128.     ;
  129. }
  130.  
  131. ///
  132.